<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    // 数组的很多方法会影响原数组 => 当执行这些操作时,如果不希望影响原数组 就要先复制一个新数组
    //  => 得到一个与原数组元素相同的新数组




    // 数组浅复制(拷贝)  只复制第一层,对于二维数组或多维数组,只是将对数据的引用赋值给新数组
    // 1. 创建一个新数组,遍历原数组将原数组中的每个元素放到新数组中
    // 2. 使用数组的拓展方法 => concat() slice()

    // var arr = [1, 4, 7, 2, 5, 8, 3, 6, 9];
    // console.log("原数组", arr);

    // var list = [];
    // for (var i = 0; i < arr.length; i++) {
    //     var item = arr[i];
    //     list.push(item);
    // }
    // console.log(list);

    // var list = arr.concat();
    // var list = arr.slice();
    // console.log(list);
    // console.log(list === arr);


    // 浅复制现象 解析
    // var arr = [1, 4, 7, [2, 5, 8], [3, 6, 9]];
    // console.log("原数组", arr);

    // var list = [];
    // for (var i = 0; i < arr.length; i++) {
    //     var item = arr[i]; // 1 4  7  [2, 5, 8]  [3, 6, 9]
    //     list.push(item);
    // }
    // console.log(list);
    // console.log(list === arr);
    // console.log(list[3] === arr[3]);

    // list[3].push(258);
    // console.log(arr[3]);




    // 数组的深复制   => 将数组的每一层都进行拷贝

    // var arr = [1, 4, 7, [2, 5, 8], [3, 6, 9]];

    // var list = [];
    // for (var i = 0; i < arr.length; i++) {
    //     var item = arr[i]; // 1  4  7   [2, 5, 8]   [3, 6, 9]
    //     if (Array.isArray(item)) { // [2, 5, 8] 

    //         var list1 = [];
    //         for (var j = 0; j < item.length; j++) {
    //             var item1 = item[i]; // 2 5 8 
    //             if (Array.isArray(item1)) {

    //             } else {
    //                 list1.push(item);
    //             }
    //         }

    //         list.push(list1);

    //     } else {
    //         list.push(item);
    //     }
    // }

    // console.log(list);
    // console.log(list === arr);
    // console.log(list[3] === arr[3]);



    // debugger;
    var arr = [1, 4, 7, [2, 5, 8, [3, 6, 9]]];

    function deepCopy(arr) {
        console.log(arr);
        var list = [];
        for (var i = 0; i < arr.length; i++) {
            var item = arr[i]; // 1  4  7   [2, 5, 8 ,[3, 6, 9]]   
            if (Array.isArray(item)) { // [2, 5, 8] 

                var newArr = deepCopy(item); // [2, 5, 8 ,[3, 6, 9]] => [3, 6, 9]
                list.push(newArr);

            } else {
                list.push(item);
            }
        }
        return list;
    }

    // 玩王者荣耀(6块钱的皮肤)
    // 你  -> 同桌A -> 同桌B  -> 同桌C
    //                            |
    // 6   <-   6   <-  6    <-   6


    // deepCopy([1,[2,[3]]])  -> deepCopy([2,[3]])  -> deepCopy([3])
    //                                                         |
    //       [1,[2,[3]]]      <-        [2,[3]]      <-      [3]

    var list = deepCopy(arr);
    console.log(list);

    // console.log(list === arr);
    // console.log(list[3] === arr[3]);












</script>

</html>